package com.dimples.dd.system.mapper;

import com.dimples.dd.common.pojo.PageResult;
import com.dimples.dd.mybatis.core.mapper.BaseMapperX;
import com.dimples.dd.mybatis.core.query.LambdaQueryWrapperX;
import com.dimples.dd.system.model.entity.SystemSmsTemplateDO;
import com.dimples.dd.system.model.query.SmsTemplatePageQuery;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface SystemSmsTemplateMapper extends BaseMapperX<SystemSmsTemplateDO> {

    /**
     * 根据code查询短信模板
     *
     * @param code code
     * @return SystemSmsTemplateDO
     */
    default SystemSmsTemplateDO selectByCode(String code) {
        return selectOne(SystemSmsTemplateDO::getCode, code);
    }

    /**
     * 分页查询短信模板
     *
     * @param pageQuery 分页查询参数
     * @return PageResult
     */
    default PageResult<SystemSmsTemplateDO> selectPage(SmsTemplatePageQuery pageQuery) {
        return selectPage(pageQuery, new LambdaQueryWrapperX<SystemSmsTemplateDO>()
                .eqIfPresent(SystemSmsTemplateDO::getType, pageQuery.getType())
                .eqIfPresent(SystemSmsTemplateDO::getStatus, pageQuery.getStatus())
                .likeIfPresent(SystemSmsTemplateDO::getCode, pageQuery.getCode())
                .likeIfPresent(SystemSmsTemplateDO::getContent, pageQuery.getContent())
                .likeIfPresent(SystemSmsTemplateDO::getApiTemplateId, pageQuery.getApiTemplateId())
                .eqIfPresent(SystemSmsTemplateDO::getChannelId, pageQuery.getChannelId())
                .betweenIfPresent(SystemSmsTemplateDO::getCreateTime, pageQuery.getCreateTime())
                .orderByDesc(SystemSmsTemplateDO::getId));
    }

}